package com.zh.stp;

import cn.dev33.satoken.stp.StpInterface;
import cn.hutool.core.collection.CollectionUtil;
import com.zh.domain.entity.User;
import com.zh.service.UserService;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * 自定义权限加载接口实现类
 */
@Component
public class StpInterfaceImpl implements StpInterface {

    private final UserService userService;

    public StpInterfaceImpl(UserService userService) {
        this.userService = userService;
    }

    /**
     * 返回一个账号所拥有的权限码集合 本项目不采用权限码，而是采用角色标识
     */
    @Override
    public List<String> getPermissionList(Object loginId, String loginType) {
        // 本 list 仅做模拟，实际项目中要根据具体业务逻辑来查询权限
        return new ArrayList<>();
    }

    /**
     * 返回一个账号所拥有的角色标识集合 (权限与角色可分开校验)
     */
    @Override
    public List<String> getRoleList(Object loginId, String loginType) {
        //1.从用户属性中获取角色标识
        List<String> roles=new ArrayList<>();
        int id;
        if(loginId==null){
            return roles;
        }
        id=Integer.parseInt((String) loginId);
        User user = userService.getById(id);
        roles = user.getRoles();
        if (CollectionUtil.isEmpty(roles)) {
            return null;
        }
        return roles;
    }
}
